The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
Different types of read errors can occur in an optical recording system. Two error types are single (or random) errors and burst errors. Single errors affect one or two bytes of data and can be caused by noise, a micro defect (e.g. a small air bubble) in an optical storage medium, or by other causes of signal distortion. Signal distortion can also be caused by, for example, defocus in a read back laser, tilt in a read head, and/or off-track alignment of a read head. Burst errors are caused by defects in a medium due to surface imperfections. The surface imperfections may include scratches in the media and/or presence of foreign material (e.g., dirt, dust, and fingerprint residue) on surfaces of the media.
For Blu-ray Disc systems, an encoding process may be performed to aid in minimizing, correcting and/or eliminating read errors. As an example, the encoding process may include error correction coding user data to form an ECC block. This may include encoding the user data using a long-distance code (LDC) and encoding other data (e.g., address fields and control data) using a burst indicator subcode (BIS) (or picket code). A picket code includes sync patterns and a BIS. The LDC and BIS may be Reed-Solomon codes. As an example, 304 LDC codewords may be formed based on the user data. Each of the 304 LDC codewords may have, for example, 216 information symbols and 32 parity symbols.
The LDC codewords may then be used to form an ECC block. The ECC block may include, for example, 64 kilobytes of user data. The LDC codewords are arranged to form a first matrix with 304 columns, where each of the columns of the first matrix has a respective one of the LDC codewords. The first matrix may have 248 rows including the 216 information symbols (e.g., 216 symbols of encoded user data) and 32 parity symbols, where each row has 304 symbols (or bytes) of data.
The encoding process further includes interleaving the 304 codewords of the first matrix by two in a vertical direction to form a 496×152 byte block (or second matrix). Each column of the second matrix includes two codewords; the two codewords are interleaved along each of the columns (first interleaving process). Bytes of a first codeword are in 248 rows of a column and bytes of the second codeword are in the other 248 rows of the same column. The bytes of the first codeword and the second codeword are in alternating rows of the column, such that the bytes of the first codeword are every other row of the column and the bytes of the second codeword are in the remaining rows of the column.
In addition, a second interleaving process is performed including left shifting pairs of the rows of the second matrix in a predetermined pattern. Subsequent to the second interleaving process, equally spaced picket columns 10 (e.g., 4 picket columns) are inserted into the second matrix with the leftmost picket column 12 including a sync pattern to form a third matrix 14, as shown in FIG. 1. The sync pattern includes sync marks, which are included at a beginning of each row of the third matrix 14. Subsequent to the sync pattern, each of the rows may include the other three picket columns. Between each consecutive pair of picket columns is, for example, 38 columns of information symbols (or encoded user data) 16 and parity symbols 18. The 2nd-4th picket columns include BIS codewords. Each BIS codeword may have 30 information symbols (e.g., 30 symbols of encoded address fields and control data) and 32 parity symbols for a total codeword length of 62 bytes. A total of 24 BIS codewords may be interleaved into the 2nd-4th picket columns, where each of the 2nd-4th picket columns has 496 bytes. As a result, each row of the third matrix includes in the following order a sync mark, 38 LDC bytes, a BIS byte, 38 LDC bytes, a BIS byte, 38 LDC bytes, a BIS byte, and 38 LDC bytes.
In FIG. 1, S is a length of the sync mark in each row, U is a length of information or parity symbols between picket columns, and B is a length of BIS data in each picket column of each row. A length of each row minus the sync mark length S is identified as lengthR. A length of a column of information symbols is identified as lengthL. A length of a column of parity symbols is identified as lengthP. An overall column length is identified as lengthC.
Following ECC encoding, the codeword data of the resulting third matrix (or ECC block) is encoded using a modulation code. The modulation code may be, for example, a 17PP code used for Blu-ray recordings. The acronym “17PP” refers to constraints d and k used in the modulation code, where d is a minimum runlength and k is a maximum runlength. The constraints indicate minimum and maximum runlengths of bits that may occur in a channel bit stream. ECC encoded data provided as a result of the modulation encoding can be written to a storage medium (e.g., a disc) in a row-wise fashion (i.e. one row at a time).
The BIS codewords and the sync pattern can be used to identify bursts (strings) of incorrect user data when reading the ECC encoded data back from the storage medium. Examples of bursts are indicated in FIG. 1. For example, if bytes in two or more consecutive picket columns of a row are incorrect (or failed a decoding evaluation) then a burst may be assumed. The bytes between the two picket columns of that row are assumed to also be incorrect and are marked as erasures by creating erasure location pointers. In FIG. 1, three bursts X, Y, Z are identified. The first burst and the third burst are short and each includes two consecutive picket bytes. The second burst is long and includes eight picket bytes.